System.Nullable<T> 结构
本文提供了此 API 参考文档的补充说明。
该 Nullable 类表示可分配 null
的值类型。
如果类型可以赋值或可赋 null
值,则类型为可为 null,这意味着该类型没有任何值。 默认情况下,所有引用类型(例如 String)都是可为 null 的,但所有值类型(例如 Int32)都不是。
在 C# 和 Visual Basic 中,使用 ?
值类型后面的表示法将值类型标记为可为 null。 例如, int?
在 C# 或 Integer?
Visual Basic 中,声明可以分配 null
的整数值类型。
结构 Nullable<T> 仅支持将值类型用作可为 null 的类型,因为引用类型按设计可为 null。
该 Nullable 类为 Nullable<T> 结构提供补充支持。 该 Nullable 类支持获取可以为 null 的类型的基础类型,以及对基础值类型不支持泛型比较和相等运算的可为空类型的比较和相等运算。
基本属性
结构的两个基本成员Nullable<T>是HasValue属性。Value HasValue如果对象的属性Nullable<T>是true
,则可以使用Value该属性访问该对象的值。 HasValue如果该属性是false
,则对象的值未定义,并且尝试访问Value该属性将引发一个 InvalidOperationException。
装箱和取消装箱
当装箱可为 null 的类型时,公共语言运行时会自动装箱对象的基础值 Nullable<T> ,而不是 Nullable<T> 对象本身。 也就是说,如果该 HasValue 属性为 true
,则对属性的内容 Value 进行装箱。 取消装箱可为 null 类型的基础值时,公共语言运行时将创建初始化为基础值的新 Nullable<T> 结构。
HasValue
如果可为 null 类型的false
属性,则装箱操作的结果为 null
。 因此,如果将装箱可以为 null 的类型传递给需要对象参数的方法,则必须准备好该方法来处理参数所在的 null
事例。 当取消装箱到可为 null 的类型时 null
,公共语言运行时将创建一个新 Nullable<T> 结构并将其属性初始化 HasValue
为 false
。
Windows 运行时组件
可以将类型 Nullable<T> 作为 WinMD 库中导出的结构的成员包含在内。